Functional programming languages and some programming languages with functional components provide a lazy evaluation scheme for argument passing in which the value of the expression used as an argument is evaluated only if it is actually needed within the called function. Efficient implementation of this lazy evaluation scheme may increase the speed with which some code written in such programming languages executes. Utilization of an eager and optimistic implementation which may be rolled back in the event the implementation is too optimistic may increase the reliability of such an implementation scheme.